Taller 8

Análisis Estadístico de Datos en Salud

PFC 2023 -– IETSI, EsSalud
Autores/as

Percy Soto-Becerra

Anthony Romero

Fecha de publicación

21-06-2023

1 Introducción

En este taller replicaremos algunas tablas y análisis de datos del siguiente artículo: https://www.sciencedirect.com/science/article/pii/S2590136223000529

2 Parte 1

En esta parte del taller continuaremos analizando los datos que analizamos en el taller pasado sobre el experimento aleatorizado de maca

2.1 Cargar paquetes

library(tidyverse)                   # Varias funciones de tidyverse (dplyr, ggplot2, etc.)
library(rio)                         # Navaja suiza de la importación de datos
library(skimr)                       # Análisis inicial de datos
library(Hmisc)                       # Análisis inicial de datos
library(janitor)                     # Para identificar duplicados
library(gt)                          # Gramatica de tablas
library(gtsummary)                   # Wrapper de gt para inv. biomedica
library(patchwork)                   # Componer, fusionar, manipular graficos ggplot2
library(knitr)                       # Para usar algunos superpoderes de Quarto (include_graphics)
library(kableExtra)

2.2 Cargar los datos

data <- import("data_derived_pf.rds")

2.3 Explorar datos

head(data)
# A tibble: 6 × 76
  record_id    age agecat agecat2 sex   nac   ingresos_per ingresos_fam prof_cat
  <labelled> <dbl> <fct>  <fct>   <fct> <fct> <fct>        <fct>        <fct>   
1 SA0001F2      33 20-44  (30,40] Male  Peru  <NA>         <NA>         Adminis…
2 SA0002F2      54 45-59  (50,60] Fema… Peru  5581-9300    5581-9300    Nurses  
3 SA0004F2      51 45-59  (50,60] Male  Peru  >=9301       >=9301       Pyshici…
4 SA0007F2      64 60+    (60,70] Male  Peru  3721-5580    3721-5580    Pyshici…
5 SA0008F2      69 60+    (60,70] Fema… Peru  <NA>         <NA>         Pyshici…
6 SA0009F2      68 60+    (60,70] Male  Peru  5581-9300    5581-9300    Pyshici…
# ℹ 67 more variables: hosp <fct>, area_cat <fct>, modal_cat <fct>,
#   height <dbl>, weight <int>, bmi <dbl>, bmicat <fct>, ncomorb <dbl>,
#   ncomorb2 <fct>, com_hta <fct>, com_diab <fct>, com_obes <fct>,
#   com_epc <fct>, com_trasp <fct>, com_cancer <fct>, com_asma <fct>,
#   com_desnut <fct>, com_hipot <fct>, com_vih <fct>, com_otro <fct>,
#   inmunosup <fct>, infprev <fct>, inf2 <fct>, boost <fct>, boost_date <date>,
#   boost_react <fct>, boost_react_dolor <fct>, boost_react_enroj <fct>, …
glimpse(data)
Rows: 595
Columns: 76
$ record_id             <labelled> "SA0001F2", "SA0002F2", "SA0004F2", "SA0007…
$ age                   <dbl> 33, 54, 51, 64, 69, 68, 41, 61, 29, 20, 61, 59, …
$ agecat                <fct> 20-44, 45-59, 45-59, 60+, 60+, 60+, 20-44, 60+, …
$ agecat2               <fct> "(30,40]", "(50,60]", "(50,60]", "(60,70]", "(60…
$ sex                   <fct> Male, Female, Male, Male, Female, Male, Male, Ma…
$ nac                   <fct> Peru, Peru, Peru, Peru, Peru, Peru, Peru, Peru, …
$ ingresos_per          <fct> NA, 5581-9300, >=9301, 3721-5580, NA, 5581-9300,…
$ ingresos_fam          <fct> NA, 5581-9300, >=9301, 3721-5580, NA, 5581-9300,…
$ prof_cat              <fct> Administrative and Others, Nurses, Pyshicians, P…
$ hosp                  <fct> Hospital Nacional G. Almenara Irigoyen, Hospital…
$ area_cat              <fct> "Administ., apoyo al diagnostico y otros", "Admi…
$ modal_cat             <fct> Presential/Mix, Presential/Mix, Presential/Mix, …
$ height                <dbl> 165, 157, 159, 172, 163, 177, 170, 183, 168, 165…
$ weight                <int> 67, 82, 62, 76, 100, 78, 72, 96, 68, 72, 72, 56,…
$ bmi                   <dbl> 24.61, 33.27, 24.52, 25.69, 37.64, 24.90, 24.91,…
$ bmicat                <fct> Normal interval, Obesity, Normal interval, Overw…
$ ncomorb               <dbl> 0, 0, 1, 3, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, …
$ ncomorb2              <fct> No comorbidities, No comorbidities, At least 1 c…
$ com_hta               <fct> No, No, Yes, Yes, No, Yes, No, No, No, No, Yes, …
$ com_diab              <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_obes              <fct> No, No, No, No, Yes, No, No, No, No, No, No, No,…
$ com_epc               <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_trasp             <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_cancer            <fct> No, No, No, Yes, No, No, No, No, No, No, No, No,…
$ com_asma              <fct> No, No, No, Yes, No, No, No, No, No, No, No, No,…
$ com_desnut            <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_hipot             <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_vih               <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ com_otro              <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ inmunosup             <fct> Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes…
$ infprev               <fct> No, No, Yes, No, No, No, No, No, No, No, No, No,…
$ inf2                  <fct> No, No, Yes, No, No, No, No, No, No, No, No, No,…
$ boost                 <fct> Pfizer, Pfizer, Pfizer, Pfizer, Pfizer, Pfizer, …
$ boost_date            <date> 2021-10-16, 2021-11-11, 2021-10-15, 2021-10-15,…
$ boost_react           <fct> Yes, Yes, Yes, Yes, Yes, No, Yes, Yes, Yes, Yes,…
$ boost_react_dolor     <fct> Yes, No, Yes, Yes, Yes, No, Yes, Yes, Yes, Yes, …
$ boost_react_enroj     <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_inflam    <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_malest    <fct> No, Yes, No, No, No, No, No, No, Yes, No, No, Ye…
$ boost_react_cefalea   <fct> No, Yes, No, No, Yes, No, No, No, No, No, Yes, Y…
$ boost_react_fatiga    <fct> No, No, No, No, No, No, No, No, No, No, No, Yes,…
$ boost_react_somno     <fct> No, No, No, No, No, No, No, No, No, No, No, Yes,…
$ boost_react_fiebre    <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_escal     <fct> No, No, No, No, No, No, No, No, Yes, No, No, No,…
$ boost_react_nausea    <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_vomito    <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_diarrea   <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_dolmusc   <fct> No, No, Yes, No, No, No, No, No, No, No, No, No,…
$ boost_react_dolart    <fct> No, Yes, No, No, No, No, No, No, No, No, No, No,…
$ boost_react_alerg     <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_hipotens  <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_hipertens <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_taquicard <fct> No, Yes, No, No, No, No, No, No, No, No, No, No,…
$ boost_react_mareo     <fct> No, No, No, Yes, No, No, No, No, No, No, No, No,…
$ boost_react_dolpecho  <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_cansancio <fct> No, Yes, No, No, No, No, No, No, No, No, No, No,…
$ boost_react_rinorrea  <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_adenop    <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_granuloma <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_disfon    <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_tos       <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_dolgarg   <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_uter      <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_insomnio  <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_urticaria <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_inapet    <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ boost_react_tend      <fct> No, No, No, No, No, No, No, No, No, No, No, No, …
$ date_dosis1           <date> 2021-02-19, 2021-03-10, 2021-02-11, 2021-03-01,…
$ date_dosis2           <date> 2021-03-12, 2021-03-31, 2021-03-04, 2021-03-22,…
$ date_igg              <date> 2021-12-02, 2021-12-09, 2021-11-24, 2021-11-23,…
$ tfdos1boost           <dbl> 239, 246, 246, 228, 237, 231, 248, 246, 244, 240…
$ tfdos2boost           <dbl> 218, 225, 225, 207, 216, 210, 227, 225, 223, 219…
$ tfboostig             <dbl> 47, 28, 40, 39, 37, 54, 36, 44, 42, 37, 36, 38, …
$ igg                   <dbl> 6290, 8970, 12700, 4600, 17800, 7310, 7130, 6910…
$ logigg                <dbl> 8.746716, 9.101641, 9.449357, 8.433812, 9.786954…
$ igg_pos               <fct> Positive, Positive, Positive, Positive, Positive…
skim(data)
Data summary
Name data
Number of rows 595
Number of columns 76
_______________________
Column type frequency:
character 1
Date 4
factor 61
numeric 10
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
record_id 0 1 8 8 0 595 0

Variable type: Date

skim_variable n_missing complete_rate min max median n_unique
boost_date 0 1 2021-08-03 2021-12-18 2021-10-17 38
date_dosis1 0 1 2021-02-09 2021-04-19 2021-02-13 37
date_dosis2 0 1 2021-03-02 2021-07-03 2021-03-08 42
date_igg 0 1 2021-11-15 2022-01-18 2021-11-26 33

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
agecat 0 1.00 FALSE 3 20-: 269, 45-: 235, 60+: 91
agecat2 0 1.00 FALSE 5 (30: 173, (40: 167, (50: 132, (60: 81
sex 0 1.00 FALSE 2 Fem: 425, Mal: 170
nac 0 1.00 FALSE 2 Per: 590, For: 5
ingresos_per 192 0.68 FALSE 7 372: 116, 558: 112, 279: 61, 186: 42
ingresos_fam 228 0.62 FALSE 7 558: 100, >=9: 99, 372: 80, 279: 34
prof_cat 0 1.00 FALSE 4 Pys: 187, Nur: 168, Tec: 146, Adm: 94
hosp 3 0.99 FALSE 7 Hos: 257, Hos: 186, Hos: 118, Vil: 24
area_cat 1 1.00 FALSE 5 Hos: 162, Adm: 141, Eme: 118, UCI: 104
modal_cat 0 1.00 FALSE 2 Pre: 539, Lic: 56
bmicat 0 1.00 FALSE 3 Ove: 283, Nor: 215, Obe: 97
ncomorb2 0 1.00 FALSE 2 No : 411, At : 184
com_hta 0 1.00 FALSE 2 No: 531, Yes: 64
com_diab 0 1.00 FALSE 2 No: 568, Yes: 27
com_obes 0 1.00 FALSE 2 No: 554, Yes: 41
com_epc 0 1.00 FALSE 1 No: 595, Yes: 0
com_trasp 0 1.00 FALSE 1 No: 595, Yes: 0
com_cancer 0 1.00 FALSE 2 No: 583, Yes: 12
com_asma 0 1.00 FALSE 2 No: 550, Yes: 45
com_desnut 0 1.00 FALSE 1 No: 595, Yes: 0
com_hipot 0 1.00 FALSE 2 No: 554, Yes: 41
com_vih 0 1.00 FALSE 2 No: 594, Yes: 1
com_otro 0 1.00 FALSE 1 No: 595, Yes: 0
inmunosup 0 1.00 FALSE 2 Yes: 518, No: 77
infprev 0 1.00 FALSE 2 No: 358, Yes: 237
inf2 0 1.00 FALSE 2 No: 358, Yes: 237
boost 0 1.00 FALSE 1 Pfi: 595, Ast: 0, Sin: 0
boost_react 0 1.00 FALSE 2 Yes: 483, No: 112
boost_react_dolor 0 1.00 FALSE 2 Yes: 420, No: 175
boost_react_enroj 0 1.00 FALSE 2 No: 585, Yes: 10
boost_react_inflam 0 1.00 FALSE 2 No: 575, Yes: 20
boost_react_malest 0 1.00 FALSE 2 No: 446, Yes: 149
boost_react_cefalea 0 1.00 FALSE 2 No: 486, Yes: 109
boost_react_fatiga 0 1.00 FALSE 2 No: 561, Yes: 34
boost_react_somno 0 1.00 FALSE 2 No: 539, Yes: 56
boost_react_fiebre 0 1.00 FALSE 2 No: 526, Yes: 69
boost_react_escal 0 1.00 FALSE 2 No: 565, Yes: 30
boost_react_nausea 0 1.00 FALSE 2 No: 578, Yes: 17
boost_react_vomito 0 1.00 FALSE 2 No: 588, Yes: 7
boost_react_diarrea 0 1.00 FALSE 2 No: 587, Yes: 8
boost_react_dolmusc 0 1.00 FALSE 2 No: 551, Yes: 44
boost_react_dolart 0 1.00 FALSE 2 No: 569, Yes: 26
boost_react_alerg 0 1.00 FALSE 2 No: 592, Yes: 3
boost_react_hipotens 0 1.00 FALSE 2 No: 594, Yes: 1
boost_react_hipertens 0 1.00 FALSE 1 No: 595, Yes: 0
boost_react_taquicard 0 1.00 FALSE 2 No: 593, Yes: 2
boost_react_mareo 0 1.00 FALSE 2 No: 590, Yes: 5
boost_react_dolpecho 0 1.00 FALSE 2 No: 592, Yes: 3
boost_react_cansancio 0 1.00 FALSE 2 No: 593, Yes: 2
boost_react_rinorrea 0 1.00 FALSE 2 No: 593, Yes: 2
boost_react_adenop 0 1.00 FALSE 1 No: 595, Yes: 0
boost_react_granuloma 0 1.00 FALSE 2 No: 594, Yes: 1
boost_react_disfon 0 1.00 FALSE 2 No: 594, Yes: 1
boost_react_tos 0 1.00 FALSE 2 No: 594, Yes: 1
boost_react_dolgarg 0 1.00 FALSE 2 No: 593, Yes: 2
boost_react_uter 0 1.00 FALSE 2 No: 594, Yes: 1
boost_react_insomnio 0 1.00 FALSE 2 No: 594, Yes: 1
boost_react_urticaria 0 1.00 FALSE 2 No: 594, Yes: 1
boost_react_inapet 0 1.00 FALSE 2 No: 594, Yes: 1
boost_react_tend 0 1.00 FALSE 2 No: 594, Yes: 1
igg_pos 0 1.00 FALSE 1 Pos: 595, Neg: 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
age 0 1 46.10 11.11 20.00 37.00 46.00 54.00 70.00 ▂▇▇▆▃
height 0 1 160.66 8.41 140.00 155.00 160.00 166.00 186.00 ▁▇▆▃▁
weight 0 1 69.06 13.42 45.00 60.00 67.00 78.00 158.00 ▇▇▁▁▁
bmi 0 1 26.62 3.84 18.82 24.33 25.97 28.44 58.03 ▇▅▁▁▁
ncomorb 0 1 0.39 0.66 0.00 0.00 0.00 1.00 5.00 ▇▁▁▁▁
tfdos1boost 0 1 244.37 10.08 159.00 240.00 246.00 248.00 306.00 ▁▁▇▅▁
tfdos2boost 0 1 222.80 11.17 113.00 219.00 224.00 227.00 285.00 ▁▁▁▇▁
tfboostig 0 1 41.51 13.00 20.00 32.00 38.00 48.00 157.00 ▇▂▁▁▁
igg 0 1 10446.99 7699.77 116.00 5115.00 8410.00 13000.00 41600.00 ▇▅▂▁▁
logigg 0 1 8.99 0.79 4.75 8.54 9.04 9.47 10.64 ▁▁▂▇▃

2.4 Replicar Tabla 1

Ejercicio 1

Seleccione las variables para crear la tabla 1. Las variables son las siguientes: age, agecat2, sex, nac, ingresos_per, ingresos_fam, prof_cat, hosp, area_cat, modal_cat, height, weight, ncomorb, bmi, bmicat, com_hta, com_diab, com_epc:com_vih, inmunosup, infprev, boost, tfdos1boost, tfdos2boost, tfboostig, igg, igg_pos, boost_react (mantenga el orden). Usando gtsummary, cree la tabla 1 que mejor replique la presentada en el artículo.

data |>  
  select(age, agecat2, sex, nac, ingresos_per, ingresos_fam, 
         prof_cat, hosp, area_cat, modal_cat, height, weight, 
         ncomorb, bmi,  bmicat, com_hta, com_diab, com_epc:com_vih,
         inmunosup, infprev, boost, tfdos1boost, tfdos2boost, 
         tfboostig, igg, igg_pos, boost_react) |> 
  tbl_summary(statistic = list(all_continuous() ~ "{median} [{p25}, {p75}]", 
                               all_categorical() ~ "{n} ({p})")) |> 
  bold_labels()
Characteristic N = 5951
Age (years) 46 [37, 54]
Age group
    [20,30] 42 (7.1)
    (30,40] 173 (29)
    (40,50] 167 (28)
    (50,60] 132 (22)
    (60,70] 81 (14)
Sex
    Male 170 (29)
    Female 425 (71)
Nationality
    Peru 590 (99)
    Foreign 5 (0.8)
Personal income per month
    <930 7 (1.7)
    931-1860 24 (6.0)
    1861-2790 42 (10)
    2791-3720 61 (15)
    3721-5580 116 (29)
    5581-9300 112 (28)
    >=9301 41 (10)
    Unknown 192
Familiar income per month
    <930 8 (2.2)
    931-1860 13 (3.5)
    1861-2790 33 (9.0)
    2791-3720 34 (9.3)
    3721-5580 80 (22)
    5581-9300 100 (27)
    >=9301 99 (27)
    Unknown 228
Profession
    Administrative and Others 94 (16)
    Nurses 168 (28)
    Pyshicians 187 (31)
    Technical nurses 146 (25)
Hospital
    Hospital Nacional E. Rebagliati Martins 257 (43)
    Hospital Nacional A. Sabogal Sologuren 186 (31)
    Hospital Nacional G. Almenara Irigoyen 118 (20)
    Villa Mongrut 24 (4.1)
    H. Angamos 4 (0.7)
    Villa Panamericana 2 (0.3)
    Policlinico PIASA 1 (0.2)
    Unknown 3
Work area
    Administ., apoyo al diagnostico y otros 141 (24)
    Consulta externa/domic 69 (12)
    Emergencia 118 (20)
    Hospitalización 162 (27)
    UCI 104 (18)
    Unknown 1
Work modality
    License/Teleworking 56 (9.4)
    Presential/Mix 539 (91)
Height (cm) 160 [155, 166]
Weight (kg) 67 [60, 78]
Number of comorbidities
    0 411 (69)
    1 146 (25)
    2 31 (5.2)
    3 6 (1.0)
    5 1 (0.2)
Body mass index (kg/m2) 26.0 [24.3, 28.4]
BMI group
    Normal interval 215 (36)
    Overweight 283 (48)
    Obesity 97 (16)
Hypertension 64 (11)
Diabetes 27 (4.5)
Chronic lung disease 0 (0)
Organ transplant 0 (0)
Cancer 12 (2.0)
Asthma 45 (7.6)
Undernourishment 0 (0)
Hypothyroidism 41 (6.9)
HIV 1 (0.2)
Immunosuppressive condition 518 (87)
Previous infection 237 (40)
Booster scheme
    Pfizer 595 (100)
    Astrazeneca 0 (0)
    Sinopharm 0 (0)
Time from dosis 1 to boosting 246 [240, 248]
Time from dosis 2 to boosting 224 [219, 227]
Time from boosting to IgG measure 38 [32, 48]
Antibodies Anti-SARS-CoV-2 levels (BAU/mL) 8,410 [5,115, 13,000]
Seropositivity
    Negative 0 (0)
    Positive 595 (100)
Reactogenicity 483 (81)
1 Median [IQR]; n (%)

Ejercicio 2

Cree una tabla nueva (no presentada en el artículo) según la variable respuesta rectogenicidad (boost_react).

data |>  
  select(age, agecat2, sex, nac, ingresos_per, ingresos_fam, 
         prof_cat, hosp, area_cat, modal_cat, height, weight, 
         ncomorb, bmi,  bmicat, com_hta, com_diab, com_epc:com_vih,
         inmunosup, infprev, boost, tfdos1boost, tfdos2boost, 
         tfboostig, igg, igg_pos, boost_react) |> 
  tbl_summary(statistic = list(all_continuous() ~ "{median} [{p25}, {p75}]", 
                               all_categorical() ~ "{n} ({p})"), 
              by =  boost_react, 
              percent = "row") |> 
  bold_labels()
Characteristic Yes, N = 4831 No, N = 1121
Age (years) 46 [37, 54] 46 [36, 56]
Age group
    [20,30] 29 (69) 13 (31)
    (30,40] 142 (82) 31 (18)
    (40,50] 141 (84) 26 (16)
    (50,60] 109 (83) 23 (17)
    (60,70] 62 (77) 19 (23)
Sex
    Male 139 (82) 31 (18)
    Female 344 (81) 81 (19)
Nationality
    Peru 479 (81) 111 (19)
    Foreign 4 (80) 1 (20)
Personal income per month
    <930 7 (100) 0 (0)
    931-1860 16 (67) 8 (33)
    1861-2790 25 (60) 17 (40)
    2791-3720 48 (79) 13 (21)
    3721-5580 100 (86) 16 (14)
    5581-9300 91 (81) 21 (19)
    >=9301 32 (78) 9 (22)
    Unknown 164 28
Familiar income per month
    <930 8 (100) 0 (0)
    931-1860 7 (54) 6 (46)
    1861-2790 21 (64) 12 (36)
    2791-3720 27 (79) 7 (21)
    3721-5580 67 (84) 13 (16)
    5581-9300 88 (88) 12 (12)
    >=9301 77 (78) 22 (22)
    Unknown 188 40
Profession
    Administrative and Others 74 (79) 20 (21)
    Nurses 151 (90) 17 (10)
    Pyshicians 159 (85) 28 (15)
    Technical nurses 99 (68) 47 (32)
Hospital
    Hospital Nacional E. Rebagliati Martins 217 (84) 40 (16)
    Hospital Nacional A. Sabogal Sologuren 147 (79) 39 (21)
    Hospital Nacional G. Almenara Irigoyen 92 (78) 26 (22)
    Villa Mongrut 21 (88) 3 (13)
    H. Angamos 2 (50) 2 (50)
    Villa Panamericana 1 (50) 1 (50)
    Policlinico PIASA 1 (100) 0 (0)
    Unknown 2 1
Work area
    Administ., apoyo al diagnostico y otros 116 (82) 25 (18)
    Consulta externa/domic 51 (74) 18 (26)
    Emergencia 103 (87) 15 (13)
    Hospitalización 130 (80) 32 (20)
    UCI 82 (79) 22 (21)
    Unknown 1 0
Work modality
    License/Teleworking 44 (79) 12 (21)
    Presential/Mix 439 (81) 100 (19)
Height (cm) 160 [155, 166] 160 [155, 165]
Weight (kg) 67 [59, 78] 68 [61, 78]
Number of comorbidities
    0 330 (80) 81 (20)
    1 121 (83) 25 (17)
    2 27 (87) 4 (13)
    3 5 (83) 1 (17)
    5 0 (0) 1 (100)
Body mass index (kg/m2) 26.1 [24.2, 28.5] 25.8 [24.7, 28.4]
BMI group
    Normal interval 180 (84) 35 (16)
    Overweight 223 (79) 60 (21)
    Obesity 80 (82) 17 (18)
Hypertension 51 (80) 13 (20)
Diabetes 23 (85) 4 (15)
Chronic lung disease 0 (NA) 0 (NA)
Organ transplant 0 (NA) 0 (NA)
Cancer 9 (75) 3 (25)
Asthma 36 (80) 9 (20)
Undernourishment 0 (NA) 0 (NA)
Hypothyroidism 34 (83) 7 (17)
HIV 1 (100) 0 (0)
Immunosuppressive condition 421 (81) 97 (19)
Previous infection 194 (82) 43 (18)
Booster scheme
    Pfizer 483 (81) 112 (19)
    Astrazeneca 0 (NA) 0 (NA)
    Sinopharm 0 (NA) 0 (NA)
Time from dosis 1 to boosting 246 [240, 248] 246 [240, 249]
Time from dosis 2 to boosting 224 [219, 227] 225 [219, 227]
Time from boosting to IgG measure 38 [32, 48] 40 [33, 50]
Antibodies Anti-SARS-CoV-2 levels (BAU/mL) 8,530 [5,270, 13,450] 7,820 [4,743, 11,525]
Seropositivity
    Negative 0 (NA) 0 (NA)
    Positive 483 (81) 112 (19)
1 Median [IQR]; n (%)

Ejercicio 3

Observe la Tabla 2 y haga una lectura crítica de esta. ¿Qué aspecto del análisis y presentación de resultados no aporta valor y es considerado una práctica que debe evitarse?

# Escriba el código aquí

2.5 Replicar Figura 1

Ejercicio 4

Trate de replicar cada uno de los gráficos de la Figura 1. Cree la Fig1A, Fig1B, etc por separado.

  • Grafico de densidad
data |> 
  ggplot(aes(x = igg)) + 
  geom_density(fill = "red", alpha = 0.25) +
  labs(x = "Density", y = "IgG (BAU/ml)") + 
  theme_bw() -> g0

g0

library(viridis)
library(ggsci)
library(scales)
pd <- position_dodge(0.3)
alfa <- 0.1
# Density plot----
data %>% 
  ggplot() + 
  aes(x = igg) + 
  geom_density(alpha = 0.25, fill = "red") + 
  labs(y = "Density", x = "IgG (BAU/ml)") + 
  guides(fill = guide_legend(title = "")) + 
  theme_bw() + 
  theme(legend.position = c(0.90, 0.90)) + 
  scale_fill_lancet() -> g0; g0

# Work/modality----
pd <- position_dodge(0.3)
alfa <- 0.1
data %>% 
  mutate(modal_cat = factor(modal_cat, 
                            levels = c("License/Teleworking", 
                                       "Presential/Mix"), 
                            labels = c("Work leave/remote", 
                                       "Full/part-time in-person"))) %>% 
  arrange(igg) %>% 
  ggplot() +
  aes(x = modal_cat, y = igg, group = modal_cat, 
      color = modal_cat, alpha = 0.1) + 
  geom_boxplot(aes(group = modal_cat), outlier.shape = NA) + 
  scale_fill_viridis(discrete = TRUE, alpha=0.6) +
  geom_jitter(color="black", size=1, alpha=0.9) +
  theme(
    legend.position="none",
    plot.title = element_text(size=11)
  ) +
  geom_point(position = pd, size = 0.1) + 
  labs(y = "IgG after booster (BAU/mL)", 
       x = "Working modality") +
  scale_y_continuous(trans = "log", labels = comma) + 
  theme_bw() + 
  theme(legend.position = "none") + 
  scale_color_lancet() -> g1; g1

# Previous infection----
# infprev
pd <- position_dodge(0.3)
alfa <- 0.1
data %>% 
  arrange(igg) %>% 
  ggplot() +
  aes(x = infprev, y = igg, group = infprev, 
      color = infprev, alpha = 0.1) + 
  geom_boxplot(aes(group = infprev), outlier.shape = NA) + 
  scale_fill_viridis(discrete = TRUE, alpha=0.6) +
  geom_jitter(color="black", size=1, alpha=0.9) +
  theme(
    legend.position="none",
    plot.title = element_text(size=11)
  ) +
  geom_point(position = pd, size = 0.1) + 
  labs(y = "IgG after booster (BAU/mL)", 
       x = "Previous infection") +
  scale_y_continuous(trans = "log", labels = comma) + 
  theme_bw() + 
  theme(legend.position = "none") + 
  scale_color_lancet() -> g2; g2

# Inmunosuprresive condition----
# inmunosup
pd <- position_dodge(0.3)
alfa <- 0.1
data %>% 
  arrange(igg) %>% 
  ggplot() +
  aes(x = inmunosup, y = igg, group = inmunosup, 
      color = inmunosup, alpha = 0.1) + 
  geom_boxplot(aes(group = inmunosup), outlier.shape = NA) + 
  scale_fill_viridis(discrete = TRUE, alpha=0.6) +
  geom_jitter(color="black", size=1, alpha=0.9) +
  theme(
    legend.position="none",
    plot.title = element_text(size=11)
  ) +
  geom_point(position = pd, size = 0.1) + 
  labs(y = "IgG after booster (BAU/mL)", 
       x = "Immunosuppressive condition") +
  scale_y_continuous(trans = "log", labels = comma) + 
  theme_bw() + 
  theme(legend.position = "none") + 
  scale_color_lancet() -> g3; g3

# Diabetes----
# com_diab
pd <- position_dodge(0.3)
alfa <- 0.1
data %>% 
  arrange(igg) %>% 
  ggplot() +
  aes(x = com_diab, y = igg, group = com_diab, 
      color = com_diab, alpha = 0.1) + 
  geom_boxplot(aes(group = com_diab), outlier.shape = NA) + 
  scale_fill_viridis(discrete = TRUE, alpha=0.6) +
  geom_jitter(color="black", size=1, alpha=0.9) +
  theme(
    legend.position="none",
    plot.title = element_text(size=11)
  ) +
  geom_point(position = pd, size = 0.1) + 
  labs(y = "IgG after booster (BAU/mL)", 
       x = "Diabetes") +
  scale_y_continuous(trans = "log", labels = comma) + 
  theme_bw() + 
  theme(legend.position = "none") + 
  scale_color_lancet() -> g4; g4

# Profession----
# prof_cat
pd <- position_dodge(0.3)
alfa <- 0.1
data %>% 
  mutate(prof_cat = factor(prof_cat, 
                           levels = c("Administrative and Others", 
                                      "Nurses", 
                                      "Pyshicians", 
                                      "Technical nurses"), 
                           labels = c("Admin/Others", 
                                      "Nurses", 
                                      "Physicians", 
                                      "Technical nurses"))) %>%
  arrange(igg) %>% 
  ggplot() +
  aes(x = prof_cat, y = igg, group = prof_cat, 
      color = prof_cat, alpha = 0.1) + 
  geom_boxplot(aes(group = prof_cat), outlier.shape = NA) + 
  scale_fill_viridis(discrete = TRUE, alpha=0.6) +
  geom_jitter(color="black", size=1, alpha=0.9) +
  theme(
    legend.position="none",
    plot.title = element_text(size=11)
  ) +
  geom_point(position = pd, size = 0.1) + 
  labs(y = "IgG after booster (BAU/mL)", 
       x = "Profession") +
  scale_y_continuous(trans = "log", labels = comma) + 
  theme_bw() + 
  theme(legend.position = "none") + 
  scale_color_lancet() -> g5; g5

library(patchwork)
g0 / g1

g0 | g1

(g0 / g1) | (g2 / plot_spacer()) | ( plot_spacer() / g3)

(g0 | g1) + 
  plot_annotation(tag_levels = "A")

plot_biv_cat <- (g0 | g1 | g2) / (g3 | g4 | g5) + 
  plot_annotation(tag_levels = "A")

plot_biv_cat

ggsave(filename = "Grafico_Paper.jpg", 
       device =  "jpg", 
       plot = plot_biv_cat, 
       scale = 2, 
       width = 3903, 
       height = 1822, 
       units = "px", 
       dpi = 600
       )

Ejercicio 5

Trate de replicar cada uno de los gráficos de la Figura 1. Cree la Fig1A, Fig1B, etc por separado.

# Escriba el código aquí

Ejercicio 6

Fusione los gráficos usando el paquete {patchwork} para replicar a la Figura 1.

# Escriba el código aquí

Ejercicio 7

Guarde el gráfico en formato “png”.

# Escriba el código aquí

Ejercicio 8

Imprima el gráfico en foramto “png” dentro del archivo quarto.

# Escriba el código aquí
include_graphics("Grafico_Paper.png")

Ejercicio 9

Renderice todo el quarto. Cambie el nombre del archivo html generado.

# Escriba el código aquí

Ejercicio 10

Modifique el YAML del Quarto para que la presentación de este mejore. Renderice el quarto final y compare con la primera versión del html generado en el ejercicio 9.

# Escriba el código aquí